This invention relates to a computer system of an electronic digital computer and more particularly to such a computer system utilizing hardware/firmware which employs microprogramming to carry out macroinstructions determined by a programmer of the computer.
Computers having a logic matrix control unit which is wired to control the sequential operations required by a macroinstruction or a series of macronistructions in a program as well as microprogrammed computers, are well known in the art.
In a computer employing a logic matrix for controlling a sequence of operations, the operating code of a macroinstruction provides an input to the logic matrix which passes through several subsequent states conditioned by the operating code. The output of the logic matrix provides the commands required to fetch from main memory the remaining portions of the macroinstruction, other than the operating code, which are required in the execution of the macroinstruction. The information contained in the macroinstruction conditions the manner in which the logic matrix fetches and executes the macroinstruction.
The form of organization of a logic matrix is permanently fixed in hardware. Specifically, if a user of the computer wants to change an operating code, or provide different additional macroinstructions, he must modify the entire logic matrix. Normally, the expense and time required for this change are prohibitive, the more so as the logic matrix does not normally consist of one physical modular unit located within the computer, but rather of a plurality of logic circuits distributed throughout the computer system.
In a microprogrammed computer on the other hand, an operating code of a macroinstruction provides an address to a read only memory ROM (or a programmable read-only memory) PROM which contains microprograms, each microprogram typically comprising a set of microinstructions. Therefore, a separate microprogram is used to fetch and execute each macroinstruction. This system is more flexible than the preceding arrangement because the microprogram used in connection with each macroinstruction may be altered by replacing the read-only memory. However, experience has shown that the conventional microprogramming circuitry has many limitations which limit its overall usefulness.
For example, the operating code of each macroinstruction is normally decoded by a hard-wired decoding network which provides an address to the read-only memory and also performs specific control functions. The decoding network generally takes the form of (hardware) logic circuits which are distributed throughout the computer. While it is possible to change a microprogram relating to a specific operating code by replacing the read-only memory, it is not possible to simply and conveniently change the decoding network for the operating code. In some microprogrammed computers, it would be possible to upgrade performance by adding new macroinstructions and new corresponding microprograms. However, the operating codes of the new macroinstructions could not be decoded without making expensive and time consuming alterations to the decoding network. In addition, the microprogramming memory must have a large capacity in order to store a set of distinct microprograms, each one required to fetch and execute a specific macroinstruction.